home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / C64-128Toolkit / MSD-DU10.ARC / MSD - PART 24 < prev    next >
Encoding:
Text File  |  2019-04-13  |  3.7 KB  |  73 lines

  1. ║CM:MSD - PART 24
  2. ║LM21:RM70:PP66:PG60
  3. ║P#47
  4. ║FT1:,,╨AGE <>
  5. ║AI-16
  6. $─11╞           ╙ET ─╙╦╓┼╥,╪ [$4├88,╪] FOR THIS DRIVE TO THE VALUE FROM THE ┬┴═ SECTOR.
  7. $─126           ├LEAR ╫╨╙╫,╪ [$4├2─,╪] TO CLEAR THE WRITE PROTECT SWITCH.
  8. $─12┬           ├LEAR ╬╧─╥╓,╪ [$4├86,╪] TO INDICATE THE DRIVE IS INACTIVE AND FALL THROUGH INTO ╬╞├┴╠├ TO CALCULATE THE NUMBER OF BLOCKS FREE.
  9.  
  10.  
  11.  
  12.        ╬╞├┴╠├   ├ALCULATE NUMBER OF BLOCKS FREE
  13.  
  14. $─12┼           ╩╙╥ ╙┼╠┬┴═ [$┼─┴8] TO SET THE ┬┴═ POINTER FOR THIS DRIVE.
  15. $─131           ╙ET .┘ TO $04 (THE OFFSET FOR THE START OF THE BLOCK AVAILABILITY AREA).
  16. $─133           ├LEAR .┴ AND .╪ TO HOLD THE BLOCKS FREE COUNT.  ╘HE HIGH ORDER BYTE OF THE COUNT IS IN .╪.
  17. $─136  ╬╒═╞1    ┴DD (┬═╨╬╘),┘ [($46),┘] TO .┴ TO COUNT THE NUMBER OF BLOCKS AVAILABLE ON THIS TRACK.  ╔F .├ IS SET BY THIS ADDITION THEN INCREMENT .╪.
  18. $─13├  ╬╒═╞2    ╔NCREMENT .┘ BY 4 TO POINT TO THE NEXT TRACK.
  19. $─140           ╔F .┘ = $48 (TRACK 18 * 4) THEN BRANCH TO ╬╒═╞2 TO IGNORE THE DIRECTORY TRACK.
  20. $─144           ╔F .┘ IS NOT $90 (OFFSET OF THE START OF THE DISK NAME) THEN LOOP BACK TO ╬╒═╞1 TO PROCESS ANOTHER TRACK.
  21. $─148           ╙AVE THE LOW ORDER BYTE OF THE BLOCKS FREE COUNT ON THE STACK AND TRANSFER THE HIGH ORDER BYTE OF THE COUNT FROM .╪ TO .┴.
  22. $─14┴           ╠OAD .╪ WITH THE DRIVE NUMBER ─╥╓╬╒═ [$54] AND SAVE .┴ INTO ╬─┬╚,╪ [$4├┼─,╪].  ╥ESTORE THE LOW ORDER COUNT OF BLOCKS FREE FROM THE STACK AND SAVE IT IN ╬─┬╠,╪ [$4├┼┬,╪].
  23. $─153           ╥ETURN.
  24.  
  25.  
  26.  
  27.        ╙╘╥╥─    ╙TART READING AHEAD
  28.  
  29. $─154           ╩╙╥ ╙┼╘╚─╥ [$─615] TO SET UP THE HEADER IMAGE.
  30. $─157           ╩╙╥ ╥─┬╒╞ [$─17├] TO READ THE FIRST BLOCK.
  31. $─15┴           ╩╙╥ ╫┴╘╩╧┬ [$─5╞7] TO WAIT FOR THE JOB TO COMPLETE.
  32. $─15─           ╩╙╥ ╟┼╘┬┘╘ [$─1╞2] TO GET THE FIRST DATA BYTE (IE THE TRACK LINK) AND SAVE IT INTO ╘╥┴├╦ [$55].
  33. $─162           ╩╙╥ ╟┼╘┬┘╘ [$─1╞2] TO GET THE NEXT DATA BYTE (IE THE SECTOR LINK) AND SAVE IT INTO ╙┼├╘╧╥ [$56].
  34. $─167           ╥ETURN.
  35.  
  36.  
  37.  
  38.        ╙╘╥─┬╠   ╙TART DOUBLE BUFFERING
  39. $─168           ╩╙╥ ╙╘╥╥─ [$─154] TO READ IN THE FIRST DATA BLOCK AND SET UP FOR THE NEXT ONE.
  40. $─16┬           ╔F ╘╥┴├╦ [$55] IS NOT ZERO THEN BRANCH TO ╙╘╥1 TO READ IN THE NEXT BLOCK.
  41. $─16╞           ╥ETURN.
  42. $─170  ╙╘╥1     ╩╙╥ ─┬╠┬╒╞ [$├╞┼3] TO SWITCH THE ACTIVE AND INACTIVE BUFFERS.
  43. ║FP
  44. $─173           ╩╙╥ ╙┼╘╚─╥ [$─615] TO SET UP THE HEADER FOR THE NEXT BLOCK.
  45. $─176           ╩╙╥ ╥─┬╒╞ [$─17├] TO READ THE BLOCK.
  46. $─179           ╩UMP TO ─┬╠┬╒╞ [$├╞┼3] TO RESTORE THE ORIGINAL BUFFER BACK TO ACTIVE STATUS.
  47.  
  48.  
  49.  
  50.        ╥─┬╒╞    ╙TART READ JOB FOR A BLOCK
  51.  
  52. $─17├           ╙ET .┴ TO $80 (THE JOB CODE FOR A ╥┼┴─) AND BRANCH TO ╙╘╥╘╔╘ [$─182].
  53.  
  54.  
  55.  
  56.        ╫╥╘┬╒╞   ╙TART WRITE JOB FOR A BLOCK
  57.  
  58. $─17╞           ╙ET .┴ TO $90 (THE JOB CODE FOR A ╫╥╔╘┼) AND FALL THROUGH INTO ╙╘╥╘╔╘ [$─182].
  59.  
  60.  
  61.  
  62.        ╙╘╥╘╔╘   ╙TART JOB CONTAINED IN .┴
  63.  
  64. $─182           ╙AVE THE JOB COMMAND IN .┴ INTO ├═─ [$4┼].
  65. $─184           ╩╙╥ ╟┼╘┴├╘ [$──5╞] TO GET THE ACTIVE BUFFER NUMBER AND TRANSFER IT TO .╪
  66. $─188           ╩╙╥ ╙┼╘╩┬ [$─571] TO SET THE DRIVE NUMBER FROM THE LAST JOB, CHECK FOR A LEGAL TRACK AND SECTOR, AND IF ALL IS WELL, PERFORM THE JOB.
  67. $─18┬           ╘RANSFER THE BUFFER NUMBER FROM .╪ TO .┴ AND SAVE IT ON THE STACK.
  68. $─18─           ═ULTIPLY THE BUFFER NUMBER BY 2, TRANSFER IT TO .╪, AND SET ┬╒╞╘┴┬,╪ [$7┴,╪] TO ZERO.  ╘HIS CLEARS THE LOW ORDER BYTE OF THE ACTIVE BUFFER POINTER.
  69. $─193           ╩╙╥ ╘┘╨╞╔╠ [$─1─╞] TO GET THE FILE TYPE AND IF IT IS A RELATIVE FILE THEN BRANCH TO ╫╥╘├1.
  70. $─19┴           ╙INCE THIS FILE IS NOT A RELATIVE ONE THEN INCREMENT THE BLOCK COUNT FOR THIS BUFFER      ╥┼├╠,╪ [$4├3┴] AND IF NECESSARY, THEN ALSO INCREMENT ╥┼├╚,╪ [$4├42,╪].
  71. $─1┴2  ╫╥╘├1    ╥ESTORE THE BUFFER NUMBER FROM THE STACK AND TRANSFER IT TO .╪.
  72. $─1┴4           ╥ETURN.
  73.